package com.mes.data.service.impl;

import java.util.List;

import com.mes.common.core.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import org.springframework.transaction.annotation.Transactional;
import com.mes.data.domain.DataReportDetail;
import com.mes.data.mapper.DataReportMapper;
import com.mes.data.domain.DataReport;
import com.mes.data.service.IDataReportService;

/**
 * 数据分析报告主表Service业务层处理
 * 
 * @author itflash
 * @date 2025-02-27
 */
@Service
public class DataReportServiceImpl implements IDataReportService 
{
    @Autowired
    private DataReportMapper dataReportMapper;

    /**
     * 查询数据分析报告主表
     * 
     * @param id 数据分析报告主表主键
     * @return 数据分析报告主表
     */
    @Override
    public DataReport selectDataReportById(Long id)
    {
        return dataReportMapper.selectDataReportById(id);
    }

    /**
     * 查询数据分析报告主表列表
     * 
     * @param dataReport 数据分析报告主表
     * @return 数据分析报告主表
     */
    @Override
    public List<DataReport> selectDataReportList(DataReport dataReport)
    {
        return dataReportMapper.selectDataReportList(dataReport);
    }

    /**
     * 新增数据分析报告主表
     * 
     * @param dataReport 数据分析报告主表
     * @return 结果
     */
    @Transactional
    @Override
    public int insertDataReport(DataReport dataReport)
    {
        int rows = dataReportMapper.insertDataReport(dataReport);
        insertDataReportDetail(dataReport);
        return rows;
    }

    /**
     * 修改数据分析报告主表
     * 
     * @param dataReport 数据分析报告主表
     * @return 结果
     */
    @Transactional
    @Override
    public int updateDataReport(DataReport dataReport)
    {
        dataReportMapper.deleteDataReportDetailByReportId(dataReport.getId());
        insertDataReportDetail(dataReport);
        return dataReportMapper.updateDataReport(dataReport);
    }

    /**
     * 批量删除数据分析报告主表
     * 
     * @param ids 需要删除的数据分析报告主表主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteDataReportByIds(Long[] ids)
    {
        dataReportMapper.deleteDataReportDetailByReportIds(ids);
        return dataReportMapper.deleteDataReportByIds(ids);
    }

    /**
     * 删除数据分析报告主表信息
     * 
     * @param id 数据分析报告主表主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteDataReportById(Long id)
    {
        dataReportMapper.deleteDataReportDetailByReportId(id);
        return dataReportMapper.deleteDataReportById(id);
    }

    /**
     * 新增数据分析报告明细信息
     * 
     * @param dataReport 数据分析报告主表对象
     */
    public void insertDataReportDetail(DataReport dataReport)
    {
        List<DataReportDetail> dataReportDetailList = dataReport.getDataReportDetailList();
        Long id = dataReport.getId();
        if (StringUtils.isNotNull(dataReportDetailList))
        {
            List<DataReportDetail> list = new ArrayList<DataReportDetail>();
            for (DataReportDetail dataReportDetail : dataReportDetailList)
            {
                dataReportDetail.setReportId(id);
                list.add(dataReportDetail);
            }
            if (list.size() > 0)
            {
                dataReportMapper.batchDataReportDetail(list);
            }
        }
    }
}
